#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time   : 2021/7/19 12:05
# @Author : cjw
from server_task.api.wework_api import WeWorkApi


class UserApi(WeWorkApi):

    def get(self, userid, **kwargs):
        """
        获取成员信息
        :param userid: 成员UserID
        :param kwargs:
        :return:
        """
        if 'json' in kwargs:
            json_data = kwargs.get('json')
            json_data.update(access_token=self.token)
        else:
            json_data = {'access_token': self.token, 'userid': userid}

        data = {
            'method': 'get',
            'url': f'{self.base_url}/user/get',
            'params': json_data
        }
        return self.request(data)

    def create(self, userid, name, email, department: list, **kwargs):
        """
        创建成员
        :param userid: 成员UserID
        :param name: 成员名称
        :param email: 邮箱
        :param department: 成员所属部门id列表,不超过100个
        :param kwargs:
        :return:
        """
        if 'json' in kwargs:
            json_data = kwargs.get('json')
        else:
            json_data = {'userid': userid, 'name': name, 'email': email, 'department': department}

        data = {
            'method': 'post',
            'url': f'{self.base_url}/user/create',
            'params': {'access_token': self.token},
            'json': json_data
        }
        return self.request(data)

    def update(self, userid, name=None, **kwargs):
        """
        更新成员信息
        :param userid: 成员UserID
        :param name: 用户名称
        :param kwargs:
        :return:
        """
        if 'json' in kwargs:
            json_data = kwargs.get('json')
        else:
            json_data = {'userid': userid, 'name': name}

        data = {
            'method': 'post',
            'url': f'{self.base_url}/user/update',
            'params': {'access_token': self.token},
            'json': json_data
        }
        return self.request(data)

    def delete(self, userid, **kwargs):
        """
        删除成员
        :param userid: 成员UserID
        :param kwargs:
        :return:
        """
        if 'json' in kwargs:
            json_data = kwargs.get('json')
            json_data.update(access_token=self.token)
        else:
            json_data = {'access_token': self.token, 'userid': userid}

        data = {
            'method': 'get',
            'url': f'{self.base_url}/user/delete',
            'params': json_data
        }
        return self.request(data)
